package com.ruoyi.system.domain.project.software;

import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 软件著作权信息，存储智能药房系统V1.1等著作权登记详情对象 software_copyright
 * 
 * @author ruoyi
 * @date 2025-08-28
 */
public class SoftwareCopyright extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 记录唯一标识，主键自增 */
    private Long id;

    /** 证书号，如软著登字15608764号 */
    @Excel(name = "证书号，如软著登字15608764号")
    private String certificateNumber;

    /** 软件名称，如智能药房系统V1.1 */
    @Excel(name = "软件名称，如智能药房系统V1.1")
    private String softwareName;

    /** 著作权人，如重庆医药（集团）股份有限公司 */
    @Excel(name = "著作权人，如重庆医药", readConverterExp = "集=团")
    private String copyrightHolder;

    /** 权利取得方式，如原始取得 */
    @Excel(name = "权利取得方式，如原始取得")
    private String rightObtainingMethod;

    /** 权利范围，如全部权利 */
    @Excel(name = "权利范围，如全部权利")
    private String rightScope;

    /** 登记号，如2025SR0952566 */
    @Excel(name = "登记号，如2025SR0952566")
    private String registrationNumber;

    /** 审批依据，如《计算机软件保护条例》和《计算机软件著作权登记办法》 */
    @Excel(name = "审批依据，如《计算机软件保护条例》和《计算机软件著作权登记办法》")
    private String approvalBasis;

    /** 审批机构，如中国版权保护中心 */
    @Excel(name = "审批机构，如中国版权保护中心")
    private String approvalOrganization;

    /** 登记日期，如2025年06月09日 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "登记日期，如2025年06月09日", width = 30, dateFormat = "yyyy-MM-dd")
    private Date registrationDate;
    /** 附件 */
    private String attachment;

    private Long userId;

    private String userName;
    // 当前用户角色
    private String currentRole;

    private List<SoftwareCopyrightTeacher> teachers;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setCertificateNumber(String certificateNumber) 
    {
        this.certificateNumber = certificateNumber;
    }

    public String getCertificateNumber() 
    {
        return certificateNumber;
    }

    public void setSoftwareName(String softwareName) 
    {
        this.softwareName = softwareName;
    }

    public String getSoftwareName() 
    {
        return softwareName;
    }

    public void setCopyrightHolder(String copyrightHolder) 
    {
        this.copyrightHolder = copyrightHolder;
    }

    public String getCopyrightHolder() 
    {
        return copyrightHolder;
    }

    public void setRightObtainingMethod(String rightObtainingMethod) 
    {
        this.rightObtainingMethod = rightObtainingMethod;
    }

    public String getRightObtainingMethod() 
    {
        return rightObtainingMethod;
    }

    public void setRightScope(String rightScope) 
    {
        this.rightScope = rightScope;
    }

    public String getRightScope() 
    {
        return rightScope;
    }

    public void setRegistrationNumber(String registrationNumber) 
    {
        this.registrationNumber = registrationNumber;
    }

    public String getRegistrationNumber() 
    {
        return registrationNumber;
    }

    public void setApprovalBasis(String approvalBasis) 
    {
        this.approvalBasis = approvalBasis;
    }

    public String getApprovalBasis() 
    {
        return approvalBasis;
    }

    public void setApprovalOrganization(String approvalOrganization) 
    {
        this.approvalOrganization = approvalOrganization;
    }

    public String getApprovalOrganization() 
    {
        return approvalOrganization;
    }

    public void setRegistrationDate(Date registrationDate) 
    {
        this.registrationDate = registrationDate;
    }

    public Date getRegistrationDate() 
    {
        return registrationDate;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("certificateNumber", getCertificateNumber())
            .append("softwareName", getSoftwareName())
            .append("copyrightHolder", getCopyrightHolder())
            .append("rightObtainingMethod", getRightObtainingMethod())
            .append("rightScope", getRightScope())
            .append("registrationNumber", getRegistrationNumber())
            .append("approvalBasis", getApprovalBasis())
            .append("approvalOrganization", getApprovalOrganization())
            .append("registrationDate", getRegistrationDate())
            .toString();
    }

    public String getAttachment() {
        return attachment;
    }

    public void setAttachment(String attachment) {
        this.attachment = attachment;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getCurrentRole() {
        return currentRole;
    }

    public void setCurrentRole(String currentRole) {
        this.currentRole = currentRole;
    }

    public List<SoftwareCopyrightTeacher> getTeachers() {
        return teachers;
    }

    public void setTeachers(List<SoftwareCopyrightTeacher> teachers) {
        this.teachers = teachers;
    }
}
